package com.caioweb.osa.dao;

import java.io.Serializable;
import java.util.List;

import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;

import com.caioweb.osa.modelo.Ambiente;
import com.caioweb.osa.modelo.Branch;
import com.caioweb.osa.modelo.Cliente;

public class AmbienteDAO implements Serializable{
	@Inject
	private DAO<Ambiente> dao;
	@Inject
	private EntityManager em;

	public void adiciona(Ambiente t) {
		dao.adiciona(t);
	}

	public void remove(Ambiente t) {
		dao.remove(t);
	}

	public void atualiza(Ambiente t) {
		dao.atualiza(t);
	}

	public List<Ambiente> listaTodos() {
		return dao.listaTodos();
	}

	public Ambiente buscaPorId(Long id) {
		return dao.buscaPorId(id);
	}

	public int contaTodos() {
		return dao.contaTodos();
	}

	public List<Ambiente> listaTodosPaginada(int firstResult, int maxResults) {
		return dao.listaTodosPaginada(firstResult, maxResults);
	}

	public DAO<Ambiente> getDao() {
		return dao;
	}

	public void setDao(DAO<Ambiente> dao) {
		this.dao = dao;
	}
	
	public Ambiente buscaAmbiente(Branch branch,String tipo,Cliente cliente,Long tipoCliente){
		String sql = "select a from Ambiente a join a.tipoAmbienteCliente t where a.branch = :branch and a.tpAmbiente = :tipo" +
				" and a.cliente = :cliente  and t.id = :tipoCliente";
		Query query = em.createQuery(sql);
		query.setParameter("branch", branch);
		query.setParameter("tipo", tipo);
		query.setParameter("cliente", cliente);
		query.setParameter("tipoCliente", tipoCliente);
		try {
			return (Ambiente) query.getSingleResult();
		} catch (NoResultException e) {
			return null;
		}
		
		
		
	}

}
